home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / c_news / 13 / prime.c < prev    next >
Text File  |  1988-12-09  |  2KB  |  69 lines

  1. /*    Diana Sysinger
  2.     C Programming
  3.     Extra Credit     */
  4.  
  5. /*    Division by subtraction    with error checking    */
  6.  
  7. #include <stdio.h>
  8. #include "myname.c"
  9.  
  10. int limit, num;
  11. static int count;
  12.  
  13. void getlim(void);    /* gets upper limit from user, must be greater than 2    */
  14. void prime(void);    /* finds the prime numbers between 2 and the limit     */
  15.             /* calls prtit to do the output                   */
  16. void prtit(int);    /* formats the output, 10 numbers per line         */
  17. void main(void);
  18.  
  19. void main(void)
  20. {
  21.     myname;
  22.     getlim();
  23.     prime();
  24.     fprintf(stdprn,"\n\nThere are %d primes from 2 to %d.\n\n", count, limit);
  25. }
  26.  
  27. void getlim(void)
  28. {       extern int limit;
  29.     printf("\n\nPlease enter the upper Limit for the prime search.\n");
  30.     printf("The Limit should be 2 or larger.\n");
  31.     scanf("%d", &limit);
  32.  
  33.     if (limit < 2)    {
  34.         printf("\n\nOops! Limit must be 2 or larger!");
  35.         printf("\nTry again.\n");
  36.         getch();
  37.         getlim();
  38.         }
  39.     else
  40.         fprintf(stdprn,"\nHere come the primes!\n\n");
  41. }
  42.  
  43.  
  44. void prime(void)
  45. {
  46.     int div = 2;
  47.     extern int limit, num;
  48.  
  49.     for (num = 2; num <= limit; num++)  {            /* do until limit reached    */
  50.         for ( div = 2; num >= div * div ; div++)     /* compare to square of divisor    */
  51.                 if (num % div * div == 0)    /* if num/square = 0 then num     */
  52.                 break;                /* not a prime number - do loop */
  53.  
  54.             for ( ; num % div != 0; div++)        /* if num/div = zero then check    */
  55.              ;                    /* for prime condition        */
  56.             if (div == num)                /* if div = num then num is a    */
  57.                 prtit(num);            /* prime so print it out    */
  58.         }
  59. }
  60.  
  61.  
  62. void prtit(int num)
  63. {    extern int count;
  64.  
  65.     fprintf(stdprn,"%5d", num);                /* print the numbers 10 to a     */
  66.     if ( ++count % 10 == 0 )                /* line.            */
  67.         fprintf(stdprn,"\n");
  68. }
  69.